/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.unicamp.ic.sgct.client.apresentacao.views;

import br.unicamp.ic.sgct.client.apresentacao.widgets.LabelCampoForm;
import br.unicamp.ic.sgct.client.dominio.to.TrabalhoTO;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HTMLTable.Cell;
import com.google.gwt.user.client.ui.HTMLTable.RowFormatter;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import java.util.List;
import org.gwtiger.client.widget.HoverGridWidget;

/**
 *
 * @author arthur
 */
public class ViewListaTrabalho extends Composite{

    private HoverGridWidget gridListaTrabalho = new HoverGridWidget();
    private VerticalPanel panelListaTrabalho = new VerticalPanel();
    private HorizontalPanel panelADD = new HorizontalPanel();
    
    private List<TrabalhoTO> trabalhos;
    private HandlerClickListaTrabalho handler;
    private HTML strTabTitle = null;
    private int index = 0;


    public ViewListaTrabalho(String title, int index, HandlerClickListaTrabalho handler){
        this.index = index;
        this.strTabTitle = new HTML(title);
    
        this.handler = handler;
        initPanel();

        initWidget(panelListaTrabalho);
    }

    public ViewListaTrabalho addH(Widget w) {
        panelADD.add(w);
        return this;
    }

    public ViewListaTrabalho addV(Widget w) {
        panelListaTrabalho.add(w);
        return this;
    }


    /**
     * @return the trabalhos
     */
    public List<TrabalhoTO> getTrabalhos() {
        return trabalhos;
    }

    /**
     * @return the strTabTitle
     */
    public HTML getStrTabTitle() {
        return strTabTitle;
    }

    public interface HandlerClickListaTrabalho{
        public void handle(TrabalhoTO to);
    }


    private void initPanel() {
        panelListaTrabalho.setVisible(false);
        panelListaTrabalho.add(new LabelCampoForm("Trabalhos"));
        initGrid();
        panelListaTrabalho.setCellWidth(gridListaTrabalho, "70%");
        panelListaTrabalho.add(gridListaTrabalho);
        panelListaTrabalho.add(panelADD);
        //panelListaUsuario.add(panelDadosParticipacaoUsuario);

    }

    private void initGrid() {
        gridListaTrabalho.setHoverStyleName("grid-hover");
        gridListaTrabalho.setWidth(500 + "px");
        gridListaTrabalho.addClickHandler(new ClickHandler() {
            private int index;
            private boolean visible;
            @Override
            public void onClick(ClickEvent event) {
                Cell cell = gridListaTrabalho.getCellForEvent(event);
                int i = cell.getRowIndex() - 1;
                if (this.index == i && visible) {
                    visible = false;
                } else {
                    visible = true;
                    TrabalhoTO to = getTrabalhos().get(i);
                    //montarDadosUniario(to);
                    handler.handle(to);
                    //outer.showLoading(true);
                }
                this.index = i;
            }
        });
    }

    String tet = null;
    public void montar(final List<TrabalhoTO> trabalhos) {
                panelListaTrabalho.setVisible(true);
        gridListaTrabalho.clear();
        if (trabalhos != null && !trabalhos.isEmpty()) {
            this.trabalhos = trabalhos;
            gridListaTrabalho.addHeader(1, "  Titulo  ");
            
            RowFormatter rowFormatter = gridListaTrabalho.getRowFormatter();
            TrabalhoTO trabalho;
            for (int row = 0; row < trabalhos.size(); row++) {
                trabalho = trabalhos.get(row);
                if (row + 1 % 2 == 0) {
                    rowFormatter.setStyleName(row + 1, HoverGridWidget.STYLE_ROW_EVEN);
                } else {
                    rowFormatter.setStyleName(row + 1, HoverGridWidget.STYLE_ROW_ODD);
                }
                gridListaTrabalho.setId(row + 1, String.valueOf(trabalho.getIdTrabalho()));
                gridListaTrabalho.setHTML(row + 1, 1, "<label id='" + trabalho.getTitulo() + "'>" + trabalho.getTitulo() + "</label>");
                
            }
        }

    }

}
